import { ConsultType, IllnessTime } from '@/enums/index.ts'
import { Doctor, PageParams } from "@/types/homeTypes/homeTypes.ts";
import { Patient } from "@/types/userTypes/userTypes.ts";

// 图片列表
export type Image = {
   /** 图片ID */
   id: string
   /** 图片地址 */
   url: string
}

// 问诊记录
export type Consult = {
   /** 问诊记录ID */
   id: string
   /** 问诊类型 */
   type: ConsultType
   /** 快速问诊类型，0 普通 1 三甲 */
   illnessType: 0 | 1
   /** 科室ID */
   depId: string
   /** 疾病描述 */
   illnessDesc: string
   /** 疾病持续时间 */
   illnessTime: IllnessTime
   /** 是否就诊过，0 未就诊过  1 就诊过 */
   consultFlag: 0 | 1
   /** 图片数组 */
   pictures: Image[]
   /** 患者ID */
   patientId: string
   /** 优惠券ID */
   couponId: string
}

// 问诊记录-全部可选
// Required 转换为全部必须   Partial 转换问全部可选  是typeScript两个内置的泛型类型
export type PartialConsult = Partial<Consult>


// 科室
export type SubDep = {
   /** 科室ID */
   id: string
   /** 科室名称 */
   name: string
}

export type TopDep = SubDep & {
   /** 二级科室数组 */
   child: SubDep[]
}


export type ConsultIllness = Pick<PartialConsult, 'illnessDesc' | 'illnessTime' | 'consultFlag' | 'pictures'>


// 问诊订单预支付传参
export type ConsultOrderPreParams = Pick<PartialConsult, 'type' | 'illnessType'>


// 问诊订单预支付信息
export type ConsultOrderPreData = {
   /** 积分抵扣 */
   pointDeduction: number
   /** 优惠券抵扣 */
   couponDeduction: number
   /** 优惠券ID */
   couponId: string
   /** 需付款 */
   payment: number
   /** 实付款 */
   actualPayment: number
}


export enum OrderType {
   // 问诊订单
   /** 待支付 */
   ConsultPay = 1,
   /** 待接诊 */
   ConsultWait = 2,
   /** 问诊中 */
   ConsultChat = 3,
   /** 问诊完成 */
   ConsultComplete = 4,
   /** 取消问诊 */
   ConsultCancel = 5,
   // 药品订单
   /** 待支付 */
   MedicinePay = 10,
   /** 待发货 */
   MedicineSend = 11,
   /** 待收货 */
   MedicineTake = 12,
   /** 已完成 */
   MedicineComplete = 13,
   /** 取消订单 */
   MedicineCancel = 14
}


// 问诊订单单项信息
export type ConsultOrderItem = Consult & {
   /** 创建时间 */
   createTime: string
   /** 医生信息 */
   docInfo?: Doctor
   /** 患者信息 */
   patientInfo: Patient
   /** 订单编号 */
   orderNo: string
   /** 订单状态 */
   status: OrderType
   /** 状态文字 */
   statusValue: string
   /** 类型问诊文字 */
   typeValue: string
   /** 倒计时时间 */
   countdown: number
   /** 处方ID */
   prescriptionId?: string
   /** 评价ID */
   evaluateId: number
   /** 应付款 */
   payment: number
   /** 优惠券抵扣 */
   couponDeduction: number
   /** 积分抵扣 */
   pointDeduction: number
   /** 实付款 */
   actualPayment: number
}


export type ConsultOrderListParams = PageParams & {
   /** 问诊记录类型 */
   type: ConsultType
}


export type ConsultOrderPage = {
   pageTotal: number
   total: number
   rows: ConsultOrderItem[]
}


